### 项目十六 蓝牙控制LED灯

1.项目介绍

![](./media/image-20250723115743004.png)

DX-BT24 5.1蓝牙模块是为智能无线数据传输而打造，采用英国DAILOG公司14531芯片，配置256Kb 空间，遵循V5.1 BLE蓝牙规范。支持AT指令，用户可根据需要更改串口波特率、设备名称等参数，使用灵活。本模块支持UART接口，并支持蓝牙串口透传，具有成本低、体积小、功耗低、收发灵敏性高等优点，只需配备少许的外围元件就能实现其强大功能。

在实验中，我们默认为把蓝牙模块当做从机，手机当做主机。实验中我们在手机上安装对应的APP，在APP上连接蓝牙模块，然后通过手机APP控制智能家居的各元器件实现相应的功能和效果。为此我们还特别设计了分别支持安卓系统和mac系统的手机APP。

2.模块相关资料

（1）参数

- 蓝牙协议：Bluetooth Specification V5.1 BLE

- 工作距离：在开放环境中，实现40m超远距离通讯

- 工作频率：2.4GHz ISM频段

- 通信接口：UART

- 蓝牙认证：符合FCC CE ROHS REACH认证标准

- 串口参数：9600、8数据位、1停止位、无效位、无流控

- 电源：5V DC

- 工作温度：–10至+65摄氏度

（2）应用领域

DX-BT24 模块同时支持 BT5.1 BLE 协议，可以同具备 BLE 蓝牙功能的 iOS设备直接连接，支持后台程序常驻运行。主要用于短距离的数据无线传输领域。避免繁琐的线缆连接，能直接替代串口线。

BT24 模块成功应用领域：

- 蓝牙无线数据传输； 
- 手机、电脑周边设备； 
- 手持 POS 设备；
- 医疗设备无线数据传输； 
- 智能家居控制； 
- 蓝牙打印机；
- 蓝牙遥控玩具； 
- 共享单车；

（3）接口说明

![](./media/image-20250723120128595.png)

①STATE：状态脚

②RX：接收脚

③TX：发送脚

④GND：接地脚

⑤VCC：电源脚

⑥EN：使能脚

3.实验组件

| 控制板 * 1                               | 扩展板 * 1                               | LED模块* 1                               | BT-24蓝牙 *1                             | 3P 转杜邦线母 *1                         |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| ![](./media/image-20250722171949593.png) | ![](./media/image-20250722171957582.png) | ![](./media/image-20250722172016014.png) | ![](./media/image-20250723115743004.png) | ![](./media/image-20250722172025792.png) |
|                                          |                                          |                                          |                                          |                                          |

4.模块接线图

![](./media/image-20250723120939339.png)

5.实验代码

拖动代码块编写程序：

寻找代码块

![](./media/image-20250723121104295.png)

完整的代码

![](./media/image-20250723121118754.png)

特别注意：在上传测试代码时，不能连接蓝牙模块，需要把蓝牙模块取下，否则程序上传不成功。先上传测试代码，成功后再连接蓝牙和蓝牙模块，配对，连接APP。

6. APP下载和简介

（1）安卓系统手机蓝牙APP（国内）：

下载链接：http://8.210.52.206/keyes-IoT.apk

二维码下载：

![](./media/image-20250723121233105.png)

下载安装后打开

![](./media/image-20250723121252182.png)

出现如下图界面。

![](./media/image-20250723121309319.png)

控制板上传代码成功后，连接蓝牙，上电后，蓝牙模块上LED闪烁。开启手机蓝牙，点击左上角的SCANING按钮，进行蓝牙搜索和连接。

![](./media/image-20250723121325321.png)

点击连接，蓝牙BT24连接成功，显示如下图，蓝牙模块上的LED变为常亮。

![](./media/image-20250723121338379.png)

（2）苹果系统手机（平板电脑）APP

打开App Store。

![](./media/image-20250723121359136.png)

在APP Store上搜索IoT keyes，点击获取，下载安装APP即可。

![](./media/image-20250723121413650.png)

下载安装后打开

![](./media/image-20250723121426914.png)

出现如下图界面。

![](./media/image-20250723121447131.png)

点击Connect，再点击BT24就可以连接上蓝牙了,此时蓝牙的红色指示灯为常亮。

![](./media/image-20250723121500495.png)

![](./media/image-20250723121508416.png)

在APP中有16个控制按键，当手机APP成功连接上BT-24蓝牙后，我们按下APP控制按键，每按下一个APP上的按键蓝牙发送一个控制字符，蓝牙模块就能接收到一个对应的控制字符，我们在编程时，根据对应按键控制字符设置智能家居各传感器或模块的对应功能。在这个实验中，我们先测试出16个按键对应的控制字符。

实验结果

上传好测试程序，如上打开APP连接上蓝牙，点击一下![](./media/image-20250723121544324.png)点亮黄色LED灯，再点击一下熄灭LED灯。打开串口监视器，设置波特率为9600。按下手机APP上功能按钮，我们可以看到APP上功能按钮对应的控制字符，如下图：

![](./media/image-20250723121559735.png)

经过测试，我们得出了手机APP上各个按钮对应的控制字符和各个按钮对应的功能，这里我们整理了一个表格如下：**（说明：下图是安卓手机的APP一些操作说明界面（ios的界面基本一样））**。

按钮:![](./media/image-20250723121639481.png)
功能：配对连接HM-10蓝牙模块
按钮:

![](./media/image-20250723121648221.png)

功能：断开蓝牙连接

按钮:![](./media/image-20250723121806945.png)点一下发送 “a”；再点一下发送“b”。

按钮:![](./media/image-20250723121833453.png)控制字符：点一下发送 “c”；再点一下发送“d”。

按钮:![](./media/image-20250723121856360.png)控制字符：按住发送 “e”；松开发送“g”。

按钮:![](./media/image-20250723121932063.png)控制字符：按住发送 “f”；松开发送“g”。

按钮:![](./media/image-20250723121959942.png)控制字符：点一下发送 “h”；再点一下发送“S”。

按钮:![](./media/image-20250723122026996.png)控制字符：点一下发送 “i”；再点一下发送“S”。

按钮:![](./media/image-20250723122049144.png)点一下发送 “j”；再点一下发送“S”。

按钮:![](./media/image-20250723122127435.png)控制字符：点一下发送 “k”；再点一下发送“S”。

按钮:![](./media/image-20250723122221015.png)控制字符：点一下发送 “l”；再点一下发送“m”。

拖动条:![](./media/image-20250723122521276.png)控制字符：拖动拖动条松开时发送“t 50#”，字符‘t’表示起始字符；数字50表示舵机1的角度；字符‘#’表示终止字符。

按钮:![](./media/image-20250723122603704.png)控制字符：点一下发送 “n”；再点一下发送“o”。

拖动条:![](./media/image-20250723122641435.png)控制字符：拖动拖动条松开时发送“u 34#”，字符‘u’表示起始字符；数字34表示舵机2的角度；字符‘#’表示终止字符。

按钮:![](./media/image-20250723122706327.png)控制字符：点一下发送 “p”；再点一下发送“q”。

拖动条:![](./media/image-20250723122750433.png)控制字符：拖动拖动条松开时发送“v 100#”，字符‘v’表示起始字符；数字100表示led2的PWM值；字符‘#’表示终止字符。

按钮:![](./media/image-20250723122821640.png)控制字符：点一下发送 “r”；再点一下发送“s”。

拖动条:![](./media/image-20250723122847246.png)控制字符：拖动拖动条松开时发送“w 153#”，字符‘w’表示起始字符；数字153表示小风扇的PWM值；字符‘#’表示终止字符。